//    |  /           |
//    ' /   __| _` | __|  _ \   __|
//    . \  |   (   | |   (   |\__ \.
//   _|\_\_|  \__,_|\__|\___/ ____/
//                   Multi-Physics
//
//  License:		 BSD License
//					 Kratos default license: kratos/license.txt
//
//  Main authors:    Riccardo Rossi
//

// System includes

// External includes

// Project includes
#include "includes/define.h"
#include "includes/deprecated_variables.h"
#include "includes/kratos_application.h"

namespace Kratos
{

    //Create Variables by type:

    //bools


    //for Structural application:

    //for Level Set application:
    KRATOS_CREATE_VARIABLE( bool, IS_DUPLICATED )
    KRATOS_CREATE_VARIABLE( bool, SPLIT_ELEMENT )
    KRATOS_CREATE_VARIABLE( bool, SPLIT_NODAL )


    //for PFEM fluids application:
    KRATOS_CREATE_VARIABLE( int, IS_JACK_LINK )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_PRESSURE )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_VELOCITY_X )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_VELOCITY_Y )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_VELOCITY_Z )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_ANGULAR_VELOCITY_X )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_ANGULAR_VELOCITY_Y )
    KRATOS_CREATE_VARIABLE( int, IMPOSED_ANGULAR_VELOCITY_Z )

    //For the DEM Application:
    KRATOS_CREATE_VARIABLE(double, IMPOSED_VELOCITY_X_VALUE)
    KRATOS_CREATE_VARIABLE(double, IMPOSED_VELOCITY_Y_VALUE)
    KRATOS_CREATE_VARIABLE(double, IMPOSED_VELOCITY_Z_VALUE)
    KRATOS_CREATE_VARIABLE(double, IMPOSED_ANGULAR_VELOCITY_X_VALUE)
    KRATOS_CREATE_VARIABLE(double, IMPOSED_ANGULAR_VELOCITY_Y_VALUE)
    KRATOS_CREATE_VARIABLE(double, IMPOSED_ANGULAR_VELOCITY_Z_VALUE)

    KRATOS_CREATE_VARIABLE( double, IS_INLET )
    KRATOS_CREATE_VARIABLE( double, IS_INTERFACE )
    KRATOS_CREATE_VARIABLE( double, IS_VISITED )
    KRATOS_CREATE_VARIABLE( double, IS_EROSIONABLE )

    KRATOS_CREATE_VARIABLE( double, IS_STRUCTURE )
    KRATOS_CREATE_VARIABLE( double, IS_POROUS )
    KRATOS_CREATE_VARIABLE( double, IS_WATER )
    KRATOS_CREATE_VARIABLE( double, IS_FLUID )
    KRATOS_CREATE_VARIABLE( double, IS_BOUNDARY )
    KRATOS_CREATE_VARIABLE( double, IS_FREE_SURFACE )
    KRATOS_CREATE_VARIABLE( double, IS_AIR_EXIT )
    KRATOS_CREATE_VARIABLE( double, IS_LAGRANGIAN_INLET )
    KRATOS_CREATE_VARIABLE( double, IS_WATER_ELEMENT )


    KRATOS_CREATE_VARIABLE( double, IS_BURN )
    KRATOS_CREATE_VARIABLE( double, IS_DRIPPING )
    KRATOS_CREATE_VARIABLE( double, IS_PERMANENT )
    KRATOS_CREATE_VARIABLE( double, IS_WALL )

    KRATOS_CREATE_VARIABLE( double, Ypr ) //var name does not follow standard
    KRATOS_CREATE_VARIABLE( double, Yox )
    KRATOS_CREATE_VARIABLE( double, Yfuel )
    KRATOS_CREATE_VARIABLE( double, Hfuel )
    KRATOS_CREATE_VARIABLE( double, Hpr )
    KRATOS_CREATE_VARIABLE( double, Hpr1 )
    KRATOS_CREATE_VARIABLE( double, Hox )

    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_1 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_2 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_3 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_4 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_5 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_6 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_7 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_8 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_9 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_10 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_11 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_12 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_13 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_14 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_15 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_16 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_17 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_18 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_19 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_20 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_21 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_22 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_23 )
    KRATOS_CREATE_VARIABLE( double, RADIATIVE_INTENSITY_24 )

    KRATOS_CREATE_VARIABLE( double, rhoD )
    KRATOS_CREATE_VARIABLE( double, xi )
    KRATOS_CREATE_VARIABLE( double, a )
    KRATOS_CREATE_VARIABLE( double, b )


    KRATOS_CREATE_VARIABLE( double, IS_SLIP )

    //for Level Set application:
    KRATOS_CREATE_VARIABLE( double, IS_DIVIDED )

    KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( xi_c )

	//for Thermo Mechanical Application
	KRATOS_CREATE_VARIABLE(int, NODE_PROPERTY_ID)
	KRATOS_CREATE_VARIABLE(int, REF_ID)
	KRATOS_CREATE_VARIABLE(double, PARTICLE_RADIUS)
	KRATOS_CREATE_VARIABLE(double, POSETIVE_DISTANCE)
	KRATOS_CREATE_VARIABLE(double, NAGATIVE_DISTANCE)
	KRATOS_CREATE_VARIABLE(bool, IS_ESCAPED)
	KRATOS_CREATE_VARIABLE(int, IS_SOLIDIFIED)
	KRATOS_CREATE_VARIABLE(int, IS_GRAVITY_FILLING)



  void KratosApplication::RegisterDeprecatedVariables()
  {

    //for Level Set application:
    KRATOS_REGISTER_VARIABLE(  IS_DUPLICATED )
    KRATOS_REGISTER_VARIABLE(  SPLIT_ELEMENT )
    KRATOS_REGISTER_VARIABLE(  SPLIT_NODAL )

    //for PFEM fluids application:
    KRATOS_REGISTER_VARIABLE( IS_JACK_LINK )
    KRATOS_REGISTER_VARIABLE( IMPOSED_PRESSURE )
    KRATOS_REGISTER_VARIABLE( IMPOSED_VELOCITY_X )
    KRATOS_REGISTER_VARIABLE( IMPOSED_VELOCITY_Y )
    KRATOS_REGISTER_VARIABLE( IMPOSED_VELOCITY_Z )
    KRATOS_REGISTER_VARIABLE( IMPOSED_ANGULAR_VELOCITY_X )
    KRATOS_REGISTER_VARIABLE( IMPOSED_ANGULAR_VELOCITY_Y )
    KRATOS_REGISTER_VARIABLE( IMPOSED_ANGULAR_VELOCITY_Z )

    //For the DEM Application:
    KRATOS_REGISTER_VARIABLE(IMPOSED_VELOCITY_X_VALUE)
    KRATOS_REGISTER_VARIABLE(IMPOSED_VELOCITY_Y_VALUE)
    KRATOS_REGISTER_VARIABLE(IMPOSED_VELOCITY_Z_VALUE)
    KRATOS_REGISTER_VARIABLE(IMPOSED_ANGULAR_VELOCITY_X_VALUE)
    KRATOS_REGISTER_VARIABLE(IMPOSED_ANGULAR_VELOCITY_Y_VALUE)
    KRATOS_REGISTER_VARIABLE(IMPOSED_ANGULAR_VELOCITY_Z_VALUE)

    KRATOS_REGISTER_VARIABLE(   IS_INLET )
    KRATOS_REGISTER_VARIABLE(   IS_INTERFACE )
    KRATOS_REGISTER_VARIABLE(   IS_VISITED )
    KRATOS_REGISTER_VARIABLE( IS_EROSIONABLE )

    KRATOS_REGISTER_VARIABLE(   IS_STRUCTURE )
    KRATOS_REGISTER_VARIABLE(   IS_POROUS )
    KRATOS_REGISTER_VARIABLE(   IS_WATER )
    KRATOS_REGISTER_VARIABLE(   IS_FLUID )
    KRATOS_REGISTER_VARIABLE(   IS_BOUNDARY )
    KRATOS_REGISTER_VARIABLE(   IS_FREE_SURFACE )
    KRATOS_REGISTER_VARIABLE(   IS_AIR_EXIT )
    KRATOS_REGISTER_VARIABLE(   IS_LAGRANGIAN_INLET )
    KRATOS_REGISTER_VARIABLE(   IS_WATER_ELEMENT )


    KRATOS_REGISTER_VARIABLE(   IS_BURN )
    KRATOS_REGISTER_VARIABLE(   IS_DRIPPING )
    KRATOS_REGISTER_VARIABLE(   IS_PERMANENT )
    KRATOS_REGISTER_VARIABLE(   IS_WALL )

    KRATOS_REGISTER_VARIABLE(   Ypr ) //var name does not follow standard
    KRATOS_REGISTER_VARIABLE(   Yox )
    KRATOS_REGISTER_VARIABLE(   Yfuel )
    KRATOS_REGISTER_VARIABLE(   Hfuel )
    KRATOS_REGISTER_VARIABLE(   Hpr )
    KRATOS_REGISTER_VARIABLE(   Hpr1 )
    KRATOS_REGISTER_VARIABLE(   Hox )

    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_1 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_2 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_3 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_4 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_5 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_6 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_7 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_8 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_9 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_10 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_11 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_12 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_13 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_14 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_15 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_16 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_17 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_18 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_19 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_20 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_21 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_22 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_23 )
    KRATOS_REGISTER_VARIABLE(   RADIATIVE_INTENSITY_24 )

    KRATOS_REGISTER_VARIABLE(   rhoD )
    KRATOS_REGISTER_VARIABLE(   xi )
    KRATOS_REGISTER_VARIABLE(   a )
    KRATOS_REGISTER_VARIABLE(   b )


    KRATOS_REGISTER_VARIABLE(   IS_SLIP )

    //for Level Set application:
    KRATOS_REGISTER_VARIABLE(   IS_DIVIDED )

    KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( xi_c )

	//for Thermo Mechanical Application
	KRATOS_REGISTER_VARIABLE(NODE_PROPERTY_ID)
	KRATOS_REGISTER_VARIABLE(REF_ID)
	KRATOS_REGISTER_VARIABLE(PARTICLE_RADIUS)
	KRATOS_REGISTER_VARIABLE(POSETIVE_DISTANCE)
	KRATOS_REGISTER_VARIABLE(NAGATIVE_DISTANCE)
	KRATOS_REGISTER_VARIABLE(IS_ESCAPED)
	KRATOS_REGISTER_VARIABLE(IS_SOLIDIFIED)
	KRATOS_REGISTER_VARIABLE(IS_GRAVITY_FILLING)

  }
}  // namespace Kratos.
